Weekend Offer для продуктовых аналитиков – тестовое задание

Интро

Привет! В октябре мы впервые проводим Weekend Offer в команде продуктовой аналитики Kaspi.kz. Подробнее можно прочитать здесь: https://hr.kaspi.kz/weekendoffer

Чтобы участвовать в Weekend Offer, Вам нужно выполнить тестовое задание. Как выполнить тестовое задание:

Блок 1: SQL

Интро

Таблицы с данными

Для выполнения задания мы подготовили 3 таблицы с данными. Таблицы хранятся в Google BigQuery, для написания запросов и обработки данных предлагаем воспользоваться встроенным редактором. BigQuery поддерживает диалект Standard SQL.

Документация

Описание таблиц

У вас есть доступ к трем таблицам с данными (все данные приведены для примера, любые совпадения случайны):

  1. Таблица `kaspi-mobile.hiring_pa_task.pa_hiring_task` с данными по воронкам в Kaspi Travel (Авиа) c 3 по 14 июля 2022.
    -- Пример простого запроса
    
    SELECT * FROM `kaspi-mobile.hiring_pa_task.pa_hiring_task`

    Описание таблицы

    Таблица содержит данные о просмотрах экранов пользователями в виде событий (events). Ниже приведено описание событий:

    Экран/действиеНазвание событияКомментарии
    1Просмотр формы поиска билетаtravel_search_form
    2Просмотр экрана “Ищем билеты, пожалуйста, подождите”travel_search_in_progress
    3Просмотр экрана с результатами поисковой выдачиtravel_search_results
    4Просмотр экрана с деталями перелетаtravel_flight_details
    5Просмотр экрана с подтверждением выбранного тарифаtravel_tariff_confirmation
    6Просмотр экрана выбора пассажировtravel_select_passenger
    7Просмотр экрана выбора способа оплатыtravel_payment_method
    8Просмотр финального экрана – успешной оплаты1) travel_card_payment_approved, 2) travel_credit_approved1) оплата с Kaspi Gold 2) оплата в кредит

    Каждое событие содержит набор полей (event_properties). Ниже приведено описание полей:

    Название поляОписание
    1dateдата совершения события
    2timestampдата и время совершения события
    3u_idуникальный идентификатор пользователя
    4eventназвание события, возможные значения мы перечислили выше
    5d_cty_nameназвание города отправления
    6d_ctry_nameназвание страны отправления
    7d_cty_codeкод города отправления
    8a_ctry_nameназвание страны прибытия
    9a_ctry_codeкод страны прибытия
    10a_cty_nameназвание города прибытия
    11a_cty_codeкод города прибытия
  1. Таблица `kaspi-mobile.hiring_pa_task.pa_hiring_task_experiment_data`, где хранятся данные по эксперименту в Kaspi Travel c 3 по 14 июля 2022:
    -- Пример простого запроса
    
    SELECT * FROM `kaspi-mobile.hiring_pa_task.pa_hiring_task_experiment_data`

    Описание таблицы

    Таблица содержит данные о пользователях, которые участвовали в тесте в виде событий (events). Каждое событие содержит набор полей (event_properties). Ниже приведено описание полей:

    Название поляОписание
    1u_idуникальный идентификатор пользователя
    2eventназвание события
    3forkпризнак ветки (контрольная, тестовая)
    4dateдата совершения события
  1. Таблица `kaspi-mobile.hiring_pa_task.has_avia_transactions`, где хранятся идентификаторы пользователей Kaspi, которые хотя бы раз совершали покупки билетов в Kaspi Travel:
    -- Пример простого запроса
    
    SELECT * FROM `kaspi-mobile.hiring_pa_task.has_avia_transactions`

    Поля таблицы

    Название поляОписание
    1u_idуникальный идентификатор пользователя

Задания

Задание 1

Посчитайте, сколько пользователей хотя бы раз купили билет в кредит за все время.

Ожидаемый результат:

Задание 2

Посчитайте конверсию из просмотра результатов поисковой выдачи в покупку в выходные дни на международные направления в разрезе по сегментам новых/повторных за все время.

💡
Обратите внимание:
  • международный перелет – это перелет, в котором страна отправления и/или страна прилета – не Казахстан;
  • мы делим клиентов на два сегмента: новые — еще ни разу не покупали билет, повторные — хотя бы раз покупали билет;
  • идентификаторы клиентов, которые хотя бы раз покупали билет, и, соответсвенно, считаются повторными, хранятся в таблице: `kaspi-mobile.hiring_pa_task.has_avia_transactions`;
  • при подсчете числа пользователей на втором шаге (экран покупки) нужно учитывать только тех, кто был на первом шаге (экран с результатами);
  • значение конверсии нужно округлить до десятых.

Ожидаемый результат

Задание 3

Посчитайте конверсию из просмотра формы поиска в просмотр результатов поисковой выдачи, по дням c 3 по 14 июля 2022.

💡
Обратите внимание:
  • при подсчете числа пользователей на втором шаге (экран с результатами поисковой выдачи) нужно учитывать только тех, кто был на первом шаге (форма поиска);
  • оба шага воронки клиент должен пройти в один день;
  • значение конверсии нужно округлить до десятых.

Ожидаемый результат

SELECT column1, column2, column3, ...
FROM `table_name`
WHERE ...

Блок 2: Анализ результатов эксперимента

Интро

С 3 по 14 июля 2022 был запущен А/Б-тест в Kaspi Travel, в рамках которого в тестовой ветке добавили подпись о количестве оставшихся билетов по указанной цене:

Клиентская история: Я смотрю билеты на будущую поездку, чтобы проверить наличие билетов, даты рейсов, авиаперевозчика, цены и т.д.

Проблема: Есть пользователи, которые смотрят билеты заранее, например, за 2 недели до путешествия, но откладывают покупку на пару дней. Через пару дней билеты могут закончиться.

Гипотеза: Мы предполагаем, что добавление информации о количестве оставшихся билетов по текущей цене повысит конверсию в покупку на 5%, потому что пользователи будут понимать выгоду от покупки в текущем моменте.

Решение: Добавить в результаты поиска информацию о количестве оставшихся билетов по текущей цене на определенный рейс.

Целевая метрика: Конверсия из просмотра результатов поисковой выдачи в покупку.

Момент попадания в тест: Просмотр экрана с результатами поисковой выдачи.

Базовая конверсия: 9%

Описание теста: В момент попадания в тест отправляется событие ‘viewed_experiment’ с параметром fork (признак ветки теста).

Контрольная ветка:

WHERE event = 'viewed_experiment'
  AND fork = 'control'

Тестовая ветка:

WHERE event = 'viewed_experiment'
  AND fork = 'last-seats'
💡
Обрати внимание:
  • все шаги воронки клиент должен пройти в один день;
  • значение конверсии нужно округлить до десятых.

Задание 1

Напишите SQL-запросы:

Ожидаемый результат

Задание 2

Вам нужно принять решение о раскатке данного функционала по итогам А/Б-теста. Как вы считаете, стоит ли нам его раскатить?

Предлагаем при выполнении принять во внимание следующие пункты:

  1. Увеличилась ли конверсия в тестовой ветке? Если да, то насколько?
  1. Можем ли мы принять решение о раскатке на полученных данных? Хватает ли нам данных, чтобы заметить статистически значимые различия?
  1. Отличаются ли результаты в зависимости от типа перелета?
  1. Отличаются ли результаты в зависимости от опыта прошлых покупок?
  1. Есть ли дополнительные метрики, которые мы можем замерить и которые нам могут быть интересны в контексте анализа итогов?

Ожидаемый результат

  • Ответ по пунктам 1-5 в произвольной форме

Блок 3: Продуктовые навыки

Интро

В бэклоге продакт-менеджера авиабилетов в Kaspi Travel есть идеи по увеличению конверсии новых пользователей в покупку:

Задания

Задание 1

Помогите продакт-менеджеру оценить потенциал каждой из идей и приоритизировать бэклог. Для этого подумайте и опишите:

💡
Обратите внимание:
  • Можете исходить из того, что вам доступны любые данные о поведении пользователей в Travel.

Задание 2

Выберите из бэклога идею, получившую наибольший приоритет при выполнении предыдущего задания. Предположим, вы с продакт-менеджером решили запустить A/B-тест для проверки влияния предлагаемой фичи на показатели продукта. Опишите: